<?php
class Recurso {
	private $idRecurso;
	private $idUsuario;
	private $dataHoraInsercao;
	private $titulo;
	private $descricao;
	private $caminho;
	private $tamanho;
	private $tipo;
	private $idTipoPadrao;
	private $idUsuarioUltimaModificacao;
	private $dataHoraUltimaModificacao;
	private $listaCursosAssociados;
	
	
	public function Recurso($idRecurso) {
		$strQuery	=	"SELECT * FROM recursos WHERE idRecurso = " . $idRecurso;
		if(is_array($resultado = BancoDados::query($strQuery))){
			$this->setIdRecurso($resultado[0]['idRecurso']);
			$this->setIdUsuario($resultado[0]['idUsuario']);
			$this->setDataHoraInsercao($resultado[0]['dataHoraInsercao']);
			$this->setTitulo($resultado[0]['titulo']);
			$this->setDescricao($resultado[0]['descricao']);
			$this->setCaminho($resultado[0]['caminho']);
			$this->setTamanho($resultado[0]['tamanho']);
			$this->setTipo($resultado[0]['tipo']);
			$this->setIdTipoPadrao($resultado[0]['idTipoPadrao']);
			$this->setIdUsuarioUltimaModificacao($resultado[0]['idUsuarioUltimaModificacao']);
			$this->setDataHoraUltimaModificacao($resultado[0]['dataHoraUltimaModificacao']);
			
			if (is_array($resultado = Recurso::buscarCursosAssociados($idRecurso))) {
				$this->setListaCursosAssociados($resultado);
			}
			else{
				$this->setIdRecurso(null);
			}
		}
		else {
			$this->setIdRecurso(null);
		}
	}
	
	public static function getRecursosCurso($idCurso, $tipo = NULL, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		return Recurso::buscar (null, $idCurso, null, null, null, null, null, $tipo, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public static function getRecursosUsuario($idUsuario, $tipo = NULL, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		return Recurso::buscar (null, null, $idUsuario, null, null, null, null, $tipo, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public static function getUtilizacao($idUsuario) {
		$strQuery	=	"SELECT SUM(tamanho) AS totalUtilizado FROM recursos WHERE idUsuario = " . $idUsuario;
		if (!is_array($resultado	=	BancoDados::query($strQuery))){
			return false;
		}
		return	is_null($resultado[0]['totalUtilizado']) ? 0 : $resultado[0]['totalUtilizado'];
	}
	
	public static function buscarCursosAssociados($idRecurso) {
		$strQuery	=	"SELECT * from recursosCursos WHERE idRecurso = " . $idRecurso;
		
		if(!is_array($resultado = BancoDados::query($strQuery))) {
			return false;
		}
		
		return $resultado;
	}
	
	
	public static function buscar($idRecursos, $idCurso, $idUsuario, $dataHoraInsercaoInicio, $dataHoraInsercaoFim, $titulo, $descricao, $tipo, $idUsuarioUltimaModificacao, $dataHoraInsercaoUltimaModificacaoInicio, $dataHoraInsercaoUltimaModificacaoFim,  $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		if (Recurso::validarBusca($idRecursos, $idCurso, $idUsuario, $dataHoraInsercaoInicio, $dataHoraInsercaoFim, $titulo, $descricao, $tipo, $idUsuarioUltimaModificacao, $dataHoraInsercaoUltimaModificacaoInicio, $dataHoraInsercaoUltimaModificacaoFim)) {
			if ($idCurso != null)
				$strQuery = "SELECT recursos.*, recursosCursos.idCurso, recursosCursos.ordem, recursosCursos.downloads FROM recursos INNER JOIN recursosCursos ON recursosCursos.idRecurso = recursos.idRecurso WHERE ";
			else
				$strQuery = "SELECT * FROM recursos WHERE ";
				
			$idRecurso	=	"";
			if (is_array($idRecursos)) {
				foreach ($idRecursos as $id) {
					$idRecurso	.=	$id . ", ";
				}
				$idRecurso	=	preg_replace('/, $/', '', $idRecurso);
			}
			else
				$idRecurso	=	$idRecursos;
			
			$strQuery	.=	$idRecurso != null ? 'recursos.idRecurso IN (' . $idRecurso . ') AND ' : '';
			
			$strQuery .= $idCurso == null ? "" : "idCurso = " . $idCurso . " AND ";
			
			$strQuery .= $idUsuario == null ? "" : "idUsuario = " . $idUsuario . " AND ";
			$strQuery .= $dataHoraInsercaoInicio != null	?	'dataHoraInsercao >= "' . $dataHoraInsercaoInicio . ' 0:0:0" AND ' : '';
			$strQuery .= $dataHoraInsercaoFim != null		?	'dataHoraInsercao <= "' . $dataHoraInsercaoFim . ' 23:59:59" AND ' : '';
			
			$strQuery .= $titulo == null ? "" : configuraRegexpStringBusca($titulo, 'titulo');
			$strQuery .= $descricao == null ? "" : configuraRegexpStringBusca($descricao, 'descricao');
			$strQuery .= $tipo == null ? "" :  "tipo REGEXP '" . codificaStringBusca($tipo) . "' AND ";
			
			$strQuery .= $idUsuarioUltimaModificacao == null ? "" : "idUsuarioUltimaModificacao = " . $idUsuarioUltimaModificacao . " AND ";
			$strQuery .= $dataHoraInsercaoUltimaModificacaoInicio != null	?	'dataHoraInsercaoUltimaModificacao >= "' . $dataHoraInsercaoUltimaModificacaoInicio . ' 0:0:0" AND ' : '';
			$strQuery .= $dataHoraInsercaoUltimaModificacaoFim != null		?	'dataHoraInsercaoUltimaModificacao <= "' . $dataHoraInsercaoUltimaModificacaoFim . ' 23:59:59" AND ' : '';
			
			$strQuery	=	preg_replace('/ WHERE $/', ' ', $strQuery);
			$strQuery	=	preg_replace('/ AND $/', ' ', $strQuery);
			
			$strQueryCount	=	'SELECT COUNT(*) AS qtdResultados FROM (' . $strQuery . ') AS queryOriginal;';
			
			if ($resultadoCount = BancoDados::query($strQueryCount)) {
				foreach($resultadoCount as $resultado) {
					$qtdResultados	=	$resultado['qtdResultados'];
				}

				if ($qtdResultados > 0) {
					$paginaAtual	=	$paginaAtual == NULL	?	1 : $paginaAtual;
					$ordenacaoAtual	=	$ordenacaoAtual == NULL	?	'titulo' : $ordenacaoAtual;
					$ordemAtual		=	$ordemAtual == NULL		?	'ASC' : ($ordemAtual == 'desc' ? 'DESC' : 'ASC');
						
					$strQuery	.=	' ORDER BY ' . $ordenacaoAtual . ' ' . $ordemAtual;
						
					if ($resultadosPagina != NULL) {
						$qtdPaginas		=	ceil($qtdResultados / $resultadosPagina);
						$qtdPaginas		=	$qtdPaginas == 0 ? 1 : $qtdPaginas;

						$strQuery		.=	' LIMIT ' . $resultadosPagina . ' OFFSET ' . (($paginaAtual - 1) * $resultadosPagina);
					}
					else {
						$qtdPaginas	=	1;
					}
						
					$strQuery	.=	';';
					
					$resultado	=	BancoDados::query($strQuery);
						
					if (is_array($resultado)) {
						return array ('listaResultados' => $resultado, 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => $qtdPaginas);
					}
					else {
						return false;
					}
				}
				else {
					return array('listaResultados' => array(), 'qtdResultadosTotal' => 0, 'qtdPaginas' => 0);
				}
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public static function validarBusca() {
		//TODO validacao da busca
		return true;
	}
	
	public static function inserir($idUsuario, $capacidadeBancoUsuario, $fileRecurso, $strLink, $strTitulo, $strDescricao, $strIdTipoRecurso, $strTipoRecurso, $strOutroTipo, $idCursos) {
		if (Recurso::validar(true, $idUsuario, $capacidadeBancoUsuario, $fileRecurso, $strLink, $strTitulo, $strDescricao, $strIdTipoRecurso, $strTipoRecurso, $strOutroTipo, $idCursos)) {
			//Executando LOCK nas tabelas recursos para resgatar o ID do recurso inserido
			$strQuery	=	"LOCK TABLES recursos WRITE;";
			if (!($conexao = BancoDados::conectaBD())) {
				return false;
			}
				
			if (!BancoDados::query($strQuery, $conexao)) {
				return false;
			}
			$strDescricao	=	$strDescricao != '' ? "'" . $strDescricao . "'" : 'null';
			if ($strIdTipoRecurso == 'outro')
					$strTipoRecurso	=	$strOutroTipo;
					
			if (!is_numeric($strIdTipoRecurso))
				$strIdTipoRecurso	=	'null';
			
			if ($strLink != '') {
				if (!preg_match('/^http\:\/\/.*$/', $strLink)) {
					$strLink	=	'http://' . $strLink;
				}
			}
			$strCaminho	=	$strLink != '' ? $strLink : '';
			
			$strQuery	=	"INSERT INTO recursos VALUES (default, " . $idUsuario . ", NOW(), '" . $strTitulo . "', '" . $strCaminho . "', " . $strDescricao .", 0, '" . $strTipoRecurso . "', " . $strIdTipoRecurso . ", NOW(), " . $idUsuario . ")";
			if (!BancoDados::query($strQuery, $conexao)){
				return false;
			}
			
			$idRecurso	=	mysql_insert_id($conexao);
			
			//Executando o Unlock ao desconectar
			BancoDados::desconectaBD($conexao);
			
			//Salvando o Arquivo
			if ($fileRecurso['name'] != '') {
				$arquivoRecurso		=	'recurso' . $idRecurso . '.' . array_pop(explode('.', $fileRecurso['name']));
				if (move_uploaded_file($fileRecurso['tmp_name'], constant('__CAMINHO_RECURSO__') . $arquivoRecurso)) {
					$strQuery 	=	"UPDATE recursos SET caminho = '" . $arquivoRecurso . "', tamanho = " . $fileRecurso['size']/1024 . " WHERE idRecurso = " . $idRecurso . ";";

					if (!BancoDados::query($strQuery)) {
						unlink(constant('__CAMINHO_RECURSO__') . $arquivoRecurso);
						$strQuery	=	"DELETE FROM recursos WHERE idRecurso = " . $idRecurso;
						if (!BancoDados::query($strQuery)) {
							//TODO Email para adm
						}
						adicionaMensagem(texto('MENSAGEM_ERRO_UPLOAD_ARQUIVO'), 'erro');
						return false;
					}
				}
				else {
					$strQuery	=	"DELETE FROM recursos WHERE idRecurso = " . $idRecurso;
					if (!BancoDados::query($strQuery)) {
						//TODO Email para adm
					}
					adicionaMensagem(texto('MENSAGEM_ERRO_UPLOAD_ARQUIVO'), 'erro');
					return false;
				}
			}
			if (!Recurso::associaCurso(array($idRecurso), $idCursos)) {
				return false;
			}
			atualizaCurso();
			return $idRecurso;
		}
		else {
			return false;
		}
	}
	
	public static function editar($idRecurso, $idUsuario, $capacidadeBancoUsuario, $fileRecurso, $strLink, $strTitulo, $strDescricao, $strIdTipoRecurso, $strTipoRecurso, $strOutroTipo, $idCursos) {
		if (is_array($resultado = Recurso::buscar($idRecurso, null, null, null, null, null, null, null, null, null, null))) {
			$caminhoAnterior	=	$resultado['listaResultados'][0]['caminho'];
		}
		//Se o recurso era um link, precisa validar o recurso
		if(preg_match('/^http:\/\/.*/', $caminhoAnterior))
			$validaRecurso	=	true;
		else
			$validaRecurso	=	false;
		if (Recurso::validar($validaRecurso, $idUsuario, $capacidadeBancoUsuario, $fileRecurso, $strLink, $strTitulo, $strDescricao, $strIdTipoRecurso, $strTipoRecurso, $strOutroTipo, $idCursos)) {
			
			$strDescricao	=	$strDescricao != '' ? "'" . $strDescricao . "'" : 'null';
			if ($strIdTipoRecurso == 'outro')
					$strTipoRecurso	=	$strOutroTipo;
					
			if (!is_numeric($strIdTipoRecurso))
				$strIdTipoRecurso	=	'null';
				
			if ($strLink != '') {
				if (!preg_match('/^http\:\/\/.*$/', $strLink)) {
					$strLink	=	'http://' . $strLink;
				}
				$strQuery	=	"UPDATE recursos SET titulo = '" . $strTitulo . "', descricao = " . $strDescricao .", caminho = '" . $strLink . "', tamanho = 0, tipo = '" . $strTipoRecurso . "', idTipoPadrao = " . $strIdTipoRecurso . ", dataHoraUltimaModificacao = NOW(), idUsuarioUltimaModificacao = " . $idUsuario . " WHERE idRecurso = " . $idRecurso;
			}
			else
				$strQuery	=	"UPDATE recursos SET titulo = '" . $strTitulo . "', descricao = " . $strDescricao .", tipo = '" . $strTipoRecurso . "', idTipoPadrao = " . $strIdTipoRecurso . ", dataHoraUltimaModificacao = NOW(), idUsuarioUltimaModificacao = " . $idUsuario . " WHERE idRecurso = " . $idRecurso;
			
			if (!BancoDados::query($strQuery)){
				return false;
			}
			
			//Salvando o Arquivo
			if ($fileRecurso['name'] != '') {
				$arquivoRecurso		=	'recurso' . $idRecurso . '.' . array_pop(explode('.', $fileRecurso['name']));
				if (move_uploaded_file($fileRecurso['tmp_name'], constant('__CAMINHO_RECURSO__') . $arquivoRecurso)) {
					$strQuery 	=	"UPDATE recursos SET caminho = '" . $arquivoRecurso . "', tamanho = " . $fileRecurso['size']/1024 . " WHERE idRecurso = " . $idRecurso . ";";

					if (!BancoDados::query($strQuery)) {
						unlink(constant('__CAMINHO_RECURSO__') . $arquivoRecurso);
						$strQuery	=	"DELETE FROM recursos WHERE idRecurso = " . $idRecurso;
						if (!BancoDados::query($strQuery)) {
							//TODO Email para adm
						}
						adicionaMensagem(texto('MENSAGEM_ERRO_UPLOAD_ARQUIVO'), 'erro');
						return false;
					}
				}
				else {
					$strQuery	=	"DELETE FROM recursos WHERE idRecurso = " . $idRecurso;
					if (!BancoDados::query($strQuery)) {
						//TODO Email para adm
					}
					adicionaMensagem(texto('MENSAGEM_ERRO_UPLOAD_ARQUIVO'), 'erro');
					return false;
				}
			}
			else {
				if($strLink != '') {
					if(!preg_match('/^http:\/\/.*/', $caminhoAnterior)) {
						if(!unlink(constant('__CAMINHO_RECURSO__') . $caminhoAnterior)) {
							//TODO Email para o administrador
						}
					}
				}
			}
			if (!Recurso::associaCurso(array($idRecurso), $idCursos)) {
				return false;
			}
			atualizaCurso();
			return true;
		}
		else {
			return false;
		}
	}
	
	public static function ordenar($idRecurso, $idCurso, $ordemPretendida){
		$strQuery	=	"SELECT ordem FROM recursosCursos WHERE idRecurso = " . $idRecurso . " AND idCurso = " . $idCurso;
		if(!is_array($resultado = BancoDados::query($strQuery))) {
			return false;
		}
		$ordemAtual	=	$resultado[0]['ordem'];
		if ($ordemPretendida < $ordemAtual)
			$strQuery	=	"UPDATE recursosCursos SET ordem = (ordem + 1) WHERE ordem >= " . $ordemPretendida . " AND ordem < " . $ordemAtual . " AND idCurso = " . $idCurso . ";";
		else
			$strQuery	=	"UPDATE recursosCursos SET ordem = (ordem - 1) WHERE ordem <= " . $ordemPretendida . " AND ordem > " . $ordemAtual . " AND idCurso = " . $idCurso . ";";
		if(!BancoDados::query($strQuery)) {
			return false;
		}
		$strQuery	=	"UPDATE recursosCursos SET ordem = " . $ordemPretendida . " WHERE idRecurso = " . $idRecurso . "  AND idCurso = " . $idCurso . ";";
		
		if(!BancoDados::query($strQuery)) {
			return false;
		}
		return true;
	}
	
	public static function excluir($recursos) {
		if(sizeof($recursos) > 0) {
			$idRecurso	=	"";
			foreach($recursos as $recurso) {
				$idRecurso	.=$recurso['id'] . ", ";
			}
			$idRecurso	=	preg_replace('/, $/', '', $idRecurso);
			if (Recurso::excluirAssociacaoCurso($idRecurso)) {
				$strQuery	=	"DELETE FROM recursos WHERE idRecurso IN (" . $idRecurso . ")";
				if(!BancoDados::query($strQuery))
					return false;
				foreach($recursos as $recurso) {
					if ($recurso['arquivo'] != texto('TEXTO_BOTAO_LINK')) {
						if (!unlink(constant('__CAMINHO_RECURSO__') . 'recurso' . $recurso['id'] . '.' . array_pop(explode('.', $recurso['arquivo'])))) {
							//TODO email para o adm
						}
					}
				}
				atualizaCurso();
				return true;
			}
		}
		else {
			adicionaMensagem(texto('MENSAGEM_NENHUM_ITEM_SELECIONADO'), 'erro');
			return false;
		}
	}
	
	public static function associaCurso($idRecursos, $idCursos) {
		foreach ($idRecursos as $idRecurso) {
			foreach($idCursos as $idCurso) {
				$resultadoBusca	=	Recurso::buscar($idRecurso, $idCurso, null, null, null, null, null, null, null, null, null);
				//Se a associacao ainda nao existe
				if($resultadoBusca['qtdResultadosTotal'] == 0) {
					$strQuery	=	"LOCK TABLES recursosCursos WRITE;";
					if (!($conexao = BancoDados::conectaBD())) {
						return false;
					}
						
					if (!BancoDados::query($strQuery, $conexao)) {
						return false;
					}
					
					$strQuery	=	"SELECT MAX(ordem) as ordem FROM recursosCursos WHERE idCurso = " . $idCurso;
					
					if (!is_array($resultado = BancoDados::query($strQuery, $conexao))) {
						adicionaMensagem(texto('MENSAGEM_ERRO_ASSOCICAO_CURSO'), 'erro');
						return false;
					}
					$ordem 	=	is_null($resultado[0]['ordem']) ? 1 : $resultado[0]['ordem'] + 1;
					
					$strQuery	=	"INSERT INTO recursosCursos VALUES(" . $idRecurso . ", " . $idCurso . "," . $ordem . ", 0)";
					
					if (!BancoDados::query($strQuery, $conexao)) {
						adicionaMensagem(texto('MENSAGEM_ERRO_ASSOCICAO_CURSO'), 'erro');
						return false;
					}
					BancoDados::desconectaBD($conexao);
				}
			}
		}
		return true;
	}
	
	public static function excluirAssociacaoCurso($idRecursos, $idCurso = null) {
		if ($idCurso == null)
			$strQueryPegarOrdem	=	"SELECT idRecurso, ordem, idCurso FROM recursosCursos WHERE idRecurso in (" . $idRecursos . ");";
		else
			$strQueryPegarOrdem	=	"SELECT idRecurso, ordem, idCurso FROM recursosCursos WHERE idRecurso in (" . $idRecursos . ") AND idCurso = " . $idCurso . ";";
		
		if(!is_array($arrayResultados	=	BancoDados::query($strQueryPegarOrdem))) {
			return false;
		}
		
		$arrayRecursos	=	explode(", ", $idRecursos);
		if (sizeof($arrayResultados) > 0) {
			foreach ($arrayResultados as $resultado) {
				$strQueryMudarOrdem	=	"UPDATE recursosCursos SET ordem = (ordem - 1) WHERE ordem > " . $resultado['ordem'] . " AND idCurso = " . $resultado['idCurso'] . ";";
				
				if(!BancoDados::query($strQueryMudarOrdem)) {
					return false;
				}
			}
			
			foreach ($arrayResultados as $resultado) {
				if (Associacoes::excluirAssociacao($resultado['idCurso'], 'recursos',$resultado['idRecurso'])) {
					$strQuery =	"DELETE FROM recursosCursos WHERE idRecurso = " . $resultado['idRecurso'] . " and idCurso = " . $resultado['idCurso'] . ";";
					
					if(!BancoDados::query($strQuery)) {
						email(constant('EMAIL_ADM'), 'ERRO', null, 'EMAIL_ERRO_DELECAO_RECURSO', array($idRecursos));
						return false;
					}
				}
				else {
					return false;
				}
			}
		}
		return true;
	}
	
	public static function validar($validaRecurso, $idUsuario, $capacidadeBancoUsuario, $fileRecurso, $strLink, $strTitulo, $strDescricao, $strIdTipoRecurso, $strTipoRecurso, $strOutroTipo, $idCursos) {
		$validou	=	true;
		
		if (!validaAlfaNumerico($strTitulo, constant('__TAM_TITULO_RECURSO__'))) {
			$validou             =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_TITULO'))), 'erro');
		}
		
		if (((validaNumero($strIdTipoRecurso) || $strIdTipoRecurso == '--' ) && $strOutroTipo != "") || $strIdTipoRecurso == '--' || ($strIdTipoRecurso == 'outro' && $strOutroTipo == "") || ($strIdTipoRecurso == 'outro' && !validaAlfabetico($strTipoRecurso, constant('__TAM_TIPO_RECURSO__')))) {
			$validou             =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_TIPO'))), 'erro');
		}
		else {
			if ($strOutroTipo != "") {
				$strQuery	=	"SELECT tipo FROM recursoTiposPadrao WHERE tipo REGEXP '" . codificaStringBusca(canonizar($strOutroTipo)) . "'";
				if (!is_array($resultado = BancoDados::query($strQuery))) {
					return false;
				}
				if (sizeof($resultado) == 0) {
					$strQuery	=	"SELECT tipo FROM recursos WHERE idUsuario = " . $idUsuario . " AND tipo REGEXP '" . codificaStringBusca(canonizar($strOutroTipo)) . "'";
					$strQuery	=	preg_replace('/ AND $/', ' ', $strQuery);
					if (!is_array($resultado = BancoDados::query($strQuery))) {
						return false;
					}
					if (sizeof($resultado) > 0) {
						$validou             =    false;
						adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TIPO_EXISTENTE'), 'erro');
					}
				}
				else {
					$validou             =    false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TIPO_EXISTENTE'), 'erro');
				}
			}
		}
		
		//Validacao do Arquivo
		if ($strLink != "") {
			if ($fileRecurso['name'] != "") {
				$validou             =    false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_RECURSO'))), 'erro');
			}
			else {
				if (!validaUrlExterna($strLink)) {
					$validou             =    false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_RECURSO'))), 'erro');
				}
			}
		}
		
		if ($strLink == "" && $fileRecurso['name'] !=''){
			$strQuery	=	"SELECT SUM(tamanho) AS totalUtilizado FROM recursos WHERE idUsuario = " . $idUsuario;
			if (!is_array($resultado	=	BancoDados::query($strQuery))){
				return false;
			}
			$totalUtilizado 	=	is_null($resultado[0]['totalUtilizado']) ? 0 : $resultado[0]['totalUtilizado'];
			if ($capacidadeBancoUsuario != null) {
				if (($capacidadeBancoUsuario - $totalUtilizado) < $fileRecurso['size']/1024) {
					$validou             =    false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_BANCO_DE_RECURSO_CAPACIDADE_ESGOTADA'), 'erro');
				}
				else {
					if (!$validou) {
						adicionaMensagem(texto('MENSAGEM_REINSERIR_ARQUIVO'));
					}
				}
			}
			else {
				if (!$validou) {
					adicionaMensagem(texto('MENSAGEM_REINSERIR_ARQUIVO'));
				}
			}
		}
		else {
			if ($strLink == "" && $fileRecurso['name'] == '' && $validaRecurso) {
				$validou             =    false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_RECURSO'))), 'erro');
			}
		}
		return $validou;
	}
	
    /**
     * Returns $caminho.
     * @see Recurso::$caminho
     */
    public function getCaminho()
    {
        return $this->caminho;
    }
    
    /**
     * Sets $caminho.
     * @param object $caminho
     * @see Recurso::$caminho
     */
    public function setCaminho($caminho)
    {
        $this->caminho = $caminho;
    }
    
    /**
     * Returns $dataHoraInsercao.
     * @see Recurso::$dataHoraInsercao
     */
    public function getDataHoraInsercao()
    {
        return $this->dataHoraInsercao;
    }
    
    /**
     * Sets $dataHoraInsercao.
     * @param object $dataHoraInsercao
     * @see Recurso::$dataHoraInsercao
     */
    public function setDataHoraInsercao($dataHoraInsercao)
    {
        $this->dataHoraInsercao = $dataHoraInsercao;
    }
    
    /**
     * Returns $dataHoraUltimaModificacao.
     * @see Recurso::$dataHoraUltimaModificacao
     */
    public function getDataHoraUltimaModificacao()
    {
        return $this->dataHoraUltimaModificacao;
    }
    
    /**
     * Sets $dataHoraUltimaModificacao.
     * @param object $dataHoraUltimaModificacao
     * @see Recurso::$dataHoraUltimaModificacao
     */
    public function setDataHoraUltimaModificacao($dataHoraUltimaModificacao)
    {
        $this->dataHoraUltimaModificacao = $dataHoraUltimaModificacao;
    }
    
    /**
     * Returns $descricao.
     * @see Recurso::$descricao
     */
    public function getDescricao()
    {
        return $this->descricao;
    }
    
    /**
     * Sets $descricao.
     * @param object $descricao
     * @see Recurso::$descricao
     */
    public function setDescricao($descricao)
    {
        $this->descricao = $descricao;
    }
    
    /**
     * Returns $idRecurso.
     * @see Recurso::$idRecurso
     */
    public function getIdRecurso()
    {
        return $this->idRecurso;
    }
    
    /**
     * Sets $idRecurso.
     * @param object $idRecurso
     * @see Recurso::$idRecurso
     */
    public function setIdRecurso($idRecurso)
    {
        $this->idRecurso = $idRecurso;
    }
    
    /**
     * Returns $idTipoPadrao.
     * @see Recurso::$idTipoPadrao
     */
    public function getIdTipoPadrao()
    {
        return $this->idTipoPadrao;
    }
    
    /**
     * Sets $idTipoPadrao.
     * @param object $idTipoPadrao
     * @see Recurso::$idTipoPadrao
     */
    public function setIdTipoPadrao($idTipoPadrao)
    {
        $this->idTipoPadrao = $idTipoPadrao;
    }
    
    /**
     * Returns $idUsuario.
     * @see Recurso::$idUsuario
     */
    public function getIdUsuario()
    {
        return $this->idUsuario;
    }
    
    /**
     * Sets $idUsuario.
     * @param object $idUsuario
     * @see Recurso::$idUsuario
     */
    public function setIdUsuario($idUsuario)
    {
        $this->idUsuario = $idUsuario;
    }
    
    /**
     * Returns $idUsuarioUltimaModificacao.
     * @see Recurso::$idUsuarioUltimaModificacao
     */
    public function getIdUsuarioUltimaModificacao()
    {
        return $this->idUsuarioUltimaModificacao;
    }
    
    /**
     * Sets $idUsuarioUltimaModificacao.
     * @param object $idUsuarioUltimaModificacao
     * @see Recurso::$idUsuarioUltimaModificacao
     */
    public function setIdUsuarioUltimaModificacao($idUsuarioUltimaModificacao)
    {
        $this->idUsuarioUltimaModificacao = $idUsuarioUltimaModificacao;
    }
    
    /**
     * Returns $tamanho.
     * @see Recurso::$tamanho
     */
    public function getTamanho()
    {
        return $this->tamanho;
    }
    
    /**
     * Sets $tamanho.
     * @param object $tamanho
     * @see Recurso::$tamanho
     */
    public function setTamanho($tamanho)
    {
        $this->tamanho = $tamanho;
    }
    
    /**
     * Returns $tipo.
     * @see Recurso::$tipo
     */
    public function getTipo()
    {
        return $this->tipo;
    }
    
    /**
     * Sets $tipo.
     * @param object $tipo
     * @see Recurso::$tipo
     */
    public function setTipo($tipo)
    {
        $this->tipo = $tipo;
    }
    
    /**
     * Returns $titulo.
     * @see Recurso::$titulo
     */
    public function getTitulo()
    {
        return $this->titulo;
    }
    
    /**
     * Sets $titulo.
     * @param object $titulo
     * @see Recurso::$titulo
     */
    public function setTitulo($titulo)
    {
        $this->titulo = $titulo;
    }
    
 	/**
     * Returns $listaCursosAssociados.
     * @see Recurso::$listaCursosAssociados
     */
    public function getListaCursosAssociados()
    {
        return $this->listaCursosAssociados;
    }
    
    /**
     * Sets $listaCursosAssociados.
     * @param object $listaCursosAssociados
     * @see Recurso::$listaCursosAssociados
     */
    public function setListaCursosAssociados($listaCursosAssociados)
    {
        $this->listaCursosAssociados = $listaCursosAssociados;
    }

}

?>